use functions::{object_name_deserialize, object_name_serialize, object_to_string};
use glib;
use glib::translate::*;
+use glib::GString;
use glib_sys;
use ostree_sys;
use std::fmt::Display;
#[derive(Eq, Debug)]
pub struct ObjectName {
variant: glib::Variant,
- // TODO: can I store a GString here?
- checksum: String,
+ checksum: GString,
object_type: ObjectType,
}
let deserialize = object_name_deserialize(&variant);
ObjectName {
variant,
- checksum: deserialize.0.into(),
+ checksum: deserialize.0,
object_type: deserialize.1,
}
}
- pub fn new<S: Into<String>>(checksum: S, object_type: ObjectType) -> ObjectName {
+ pub fn new<S: Into<GString>>(checksum: S, object_type: ObjectType) -> ObjectName {
let checksum = checksum.into();
let variant = object_name_serialize(checksum.as_str(), object_type).unwrap();
ObjectName {
}
pub fn checksum(&self) -> &str {
- self.checksum.as_ref()
+ self.checksum.as_str()
}
pub fn object_type(&self) -> ObjectType {
self.object_type
}
- // TODO: return GString
- pub fn name(&self) -> String {
+ pub fn name(&self) -> GString {
object_to_string(self.checksum(), self.object_type())
.expect("type checks should make this safe")
- .into()
}
}